package object;

import org.testng.Assert;
import org.testng.annotations.Test;

public class Instanceof2 {

    /**
     * instanceof 和 == 判断类型的区别
     * instanceof 不是严格的比较，允许继承关系，所以父子类会被视为相同的类型
     * == 只有在相同的类对象进行比较时才为真
     */
    @Test
    private void t1() {
        Integer n = 2;

        // 注意写法，instanceof不能比较class对象
        Assert.assertTrue(n instanceof Integer);
        Assert.assertTrue(n instanceof Number);

        // == 用来比较class对象，getClass用来取得该类已经被实例化了的对象的该类的引用，这个引用指向的是Class类的对象
        // true
        Assert.assertTrue(n.getClass() == Integer.class);
        // false
//        Assert.assertTrue(n.getClass() == Number.class);
    }
}
